import functools
from flask import session, current_app, abort
from ihome.models import User


# 获取用户的登陆信息
def user_login_data(f):
    @functools.wraps(f)  # 可以让被抓格式的函数使用指定函数的信息(名称__name__,函数文档__doc__)
    def wrappers(*args, **kwargs):
        # 获取session中的user_id
        user_id = session.get("user_id")
        # 根据user_id可以取出 "用户的数据"
        user = None
        if user_id:
            try:
                user = User.query.get(user_id)
            except Exception as e:
                current_app.logger.error(e)  # 记录错误到日志中
                return abort(500)

        g.user = user
        # 获取函数的名称
        # print(wrappers.__name__)

        return f(*args, **kwargs)

    return wrappers